Interrupt requests at a central processing unit (CPU) are roughly classified into hardware interrupt requests and software interrupt requests. A hardware interrupt request is an interrupt request that peripheral equipment of a CPU makes to the CPU. For example, when a user touches the touch screen of a cellular phone to carry out a fast forward operation during reproduction of a moving picture on the cellular phone, the touch screen makes a hardware interrupt request to the CPU. A software interrupt request is an interrupt request caused by a program under execution.
When a hardware interrupt request is made, the operating system (OS) running on the CPU saves a task under execution and immediately executes a hardware interrupt handler (interrupt process) for the hardware interrupt request. The hardware interrupt handler may call a software interrupt.
In a multi-core processor system, when a hardware interrupt request is made to a master CPU, the master CPU generates a software interrupt request, in which case a task that is interrupted by the software interrupt request may be assigned to a slave CPU. When such a task is assigned to the slave CPU, the slave CPU executes a software interrupt handler (interrupt process) for the software interrupt request through inter-processor interrupt communication.
For an example of such technology, refer to Takahashi, Hirokazu, et al, “Linux Kernel Kaidokushitsu 2.6”, Softbank Creative Corp., Nov. 30, 2006, pp. 62-63.
Nonetheless, when a software interrupt request is generated through inter-processor interrupt communication, a software interrupt handler of the software interrupt request is placed in a ready-queue and awaits execution. In the ready-queue, processes are executed in their order of queuing. Consequently, a problem arises in that when numerous tasks are in the ready-queue, the start of execution of the software interrupt handler is delayed.
In other words, the time between the calling of the software interrupt handler and the start of execution of the software interrupt handler is longer than the time between the calling of the hardware interrupt handler and the start of execution of the hardware interrupt handler, resulting in a problem that the response of the software interrupt is slow.